/*模拟一个游戏场景，有一个角色类（Role）的基类,
类中定义了纯虚方法攻击方法attack(),
有战士（Warrior）、魔法师(Enchanter)继承至角色类，
重写了攻击方法,在主函数中测试，
分别调用战士和魔法师的攻击方法。
【4分，继承1分，虚函数重写2分，多态测试+规范1分】*/
#include <iostream>
using namespace std;

class Role
{
private:
    
public:
    Role(){}
    ~Role(){}
    virtual void attack()=0;
};

class Warrior :public Role
{
private:
    
public:
    Warrior(){}
    ~Warrior(){}
    void attack()
    {
        cout<<"Warrior attack!"<<endl;
    }
};

class Enchanter :public Role
{
private:
    
public:
    Enchanter(){}
    ~Enchanter(){}
    void attack()
    {
        cout<<"Enchanter attack!"<<endl;
    }
};

int main(int argc,char*argv[])
{
    Role *p1 = new Warrior;
    p1->attack();
    
    Role *p2 = new Enchanter;
    p2->attack();
    delete(p1);
    delete(p2);
    return 0;
}
